<!-- HTML header for doxygen 1.8.18-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Ipopt: Ipopt::Matrix Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 40px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Ipopt Documentation
   &#160;<!--span id="projectnumber">3.14.12</span-->
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classIpopt_1_1Matrix.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classIpopt_1_1Matrix-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Ipopt::Matrix Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> Base Class.  
 <a href="classIpopt_1_1Matrix.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for Ipopt::Matrix:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="classIpopt_1_1Matrix__inherit__graph.png" border="0" usemap="#Ipopt_1_1Matrix_inherit__map" alt="Inheritance graph"/></div>
<map name="Ipopt_1_1Matrix_inherit__map" id="Ipopt_1_1Matrix_inherit__map">
<area shape="rect" title="Matrix Base Class." alt="" coords="431,275,536,301"/>
<area shape="rect" href="classIpopt_1_1CompoundMatrix.html" title="Class for Matrices consisting of other matrices." alt="" coords="597,5,772,32"/>
<area shape="rect" href="classIpopt_1_1DenseGenMatrix.html" title="Class for dense general matrices." alt="" coords="599,56,771,83"/>
<area shape="rect" href="classIpopt_1_1ExpandedMultiVectorMatrix.html" title="Class for Matrices with few rows that consists of Vectors, together with a premultiplied Expansion ma..." alt="" coords="584,107,785,149"/>
<area shape="rect" href="classIpopt_1_1ExpansionMatrix.html" title="Class for expansion/projection matrices." alt="" coords="599,173,771,200"/>
<area shape="rect" href="classIpopt_1_1GenTMatrix.html" title="Class for general matrices stored in triplet format." alt="" coords="615,224,754,251"/>
<area shape="rect" href="classIpopt_1_1MultiVectorMatrix.html" title="Class for Matrices with few columns that consists of Vectors." alt="" coords="595,275,774,301"/>
<area shape="rect" href="classIpopt_1_1ScaledMatrix.html" title="Class for a Matrix in conjunction with its scaling factors for row and column scaling." alt="" coords="611,325,759,352"/>
<area shape="rect" href="classIpopt_1_1SumMatrix.html" title="Class for Matrices which are sum of matrices." alt="" coords="617,376,752,403"/>
<area shape="rect" href="classIpopt_1_1SymMatrix.html" title="This is the base class for all derived symmetric matrix types." alt="" coords="617,427,752,453"/>
<area shape="rect" href="classIpopt_1_1TransposeMatrix.html" title="Class for Matrices which are the transpose of another matrix." alt="" coords="599,477,770,504"/>
<area shape="rect" href="classIpopt_1_1ZeroMatrix.html" title="Class for Matrices with only zero entries." alt="" coords="617,528,752,555"/>
<area shape="rect" href="classIpopt_1_1TaggedObject.html" title="TaggedObject class." alt="" coords="232,275,383,301"/>
<area shape="rect" href="classIpopt_1_1ReferencedObject.html" title="Storing the reference count of all the smart pointers that currently reference it." alt="" coords="5,249,184,276"/>
<area shape="rect" href="classIpopt_1_1Subject.html" title="Slight Variation of the Observer Design Pattern (Subject part)." alt="" coords="39,300,150,327"/>
<area shape="rect" href="classIpopt_1_1CompoundSymMatrix.html" title="Class for symmetric matrices consisting of other matrices." alt="" coords="851,224,1055,251"/>
<area shape="rect" href="classIpopt_1_1DenseSymMatrix.html" title="Class for dense symmetric matrices." alt="" coords="866,275,1041,301"/>
<area shape="rect" href="classIpopt_1_1DiagMatrix.html" title="Class for diagonal matrices." alt="" coords="886,325,1021,352"/>
<area shape="rect" href="classIpopt_1_1IdentityMatrix.html" title="Class for Matrices which are multiples of the identity matrix." alt="" coords="876,376,1031,403"/>
<area shape="rect" href="classIpopt_1_1LowRankUpdateSymMatrix.html" title="Class for symmetric matrices, represented as low&#45;rank updates." alt="" coords="833,427,1073,453"/>
<area shape="rect" href="classIpopt_1_1SumSymMatrix.html" title="Class for Matrices which are sum of symmetric matrices." alt="" coords="872,477,1035,504"/>
<area shape="rect" href="classIpopt_1_1SymScaledMatrix.html" title="Class for a Matrix in conjunction with its scaling factors for row and column scaling." alt="" coords="865,528,1042,555"/>
<area shape="rect" href="classIpopt_1_1SymTMatrix.html" title="Class for symmetric matrices stored in triplet format." alt="" coords="882,579,1025,605"/>
<area shape="rect" href="classIpopt_1_1ZeroSymMatrix.html" title="Class for Symmetric Matrices with only zero entries." alt="" coords="871,629,1035,656"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a16f834a2deb289b60e4dc7236a4c2800"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a16f834a2deb289b60e4dc7236a4c2800">HasValidNumbers</a> () const</td></tr>
<tr class="memdesc:a16f834a2deb289b60e4dc7236a4c2800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method for determining if all stored numbers are valid (i.e., no Inf or Nan).  <a href="classIpopt_1_1Matrix.html#a16f834a2deb289b60e4dc7236a4c2800">More...</a><br /></td></tr>
<tr class="separator:a16f834a2deb289b60e4dc7236a4c2800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a799d8eeb94b851d31928eac1cc67fc4d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1SmartPtr.html">SmartPtr</a>&lt; const <a class="el" href="classIpopt_1_1MatrixSpace.html">MatrixSpace</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a799d8eeb94b851d31928eac1cc67fc4d">OwnerSpace</a> () const</td></tr>
<tr class="memdesc:a799d8eeb94b851d31928eac1cc67fc4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the owner <a class="el" href="classIpopt_1_1MatrixSpace.html" title="MatrixSpace base class, corresponding to the Matrix base class.">MatrixSpace</a>.  <a href="classIpopt_1_1Matrix.html#a799d8eeb94b851d31928eac1cc67fc4d">More...</a><br /></td></tr>
<tr class="separator:a799d8eeb94b851d31928eac1cc67fc4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructor/Destructor</div></td></tr>
<tr class="memitem:ab0b431ce35e567a20f14ff86f99c44cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#ab0b431ce35e567a20f14ff86f99c44cd">Matrix</a> (const <a class="el" href="classIpopt_1_1MatrixSpace.html">MatrixSpace</a> *owner_space)</td></tr>
<tr class="memdesc:ab0b431ce35e567a20f14ff86f99c44cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="classIpopt_1_1Matrix.html#ab0b431ce35e567a20f14ff86f99c44cd">More...</a><br /></td></tr>
<tr class="separator:ab0b431ce35e567a20f14ff86f99c44cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75d15527c1f0f957f740d02028aee9c1"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a75d15527c1f0f957f740d02028aee9c1">~Matrix</a> ()</td></tr>
<tr class="memdesc:a75d15527c1f0f957f740d02028aee9c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="classIpopt_1_1Matrix.html#a75d15527c1f0f957f740d02028aee9c1">More...</a><br /></td></tr>
<tr class="separator:a75d15527c1f0f957f740d02028aee9c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Operations of the Matrix on a Vector</div></td></tr>
<tr class="memitem:ac91a33547004104f5ed34e1047896930"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#ac91a33547004104f5ed34e1047896930">MultVector</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;x, <a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> beta, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;y) const</td></tr>
<tr class="memdesc:ac91a33547004104f5ed34e1047896930"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-vector multiply.  <a href="classIpopt_1_1Matrix.html#ac91a33547004104f5ed34e1047896930">More...</a><br /></td></tr>
<tr class="separator:ac91a33547004104f5ed34e1047896930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a603c24db27adb3502ee675ad75fb8dfd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a603c24db27adb3502ee675ad75fb8dfd">TransMultVector</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;x, <a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> beta, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;y) const</td></tr>
<tr class="memdesc:a603c24db27adb3502ee675ad75fb8dfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix(transpose) vector multiply.  <a href="classIpopt_1_1Matrix.html#a603c24db27adb3502ee675ad75fb8dfd">More...</a><br /></td></tr>
<tr class="separator:a603c24db27adb3502ee675ad75fb8dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Methods for specialized operations.</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>A prototype implementation is provided, but for efficient implementation those should be specially implemented. </p>
</div></td></tr>
<tr class="memitem:afc97762a3a84cbf6199f685157cbdbde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#afc97762a3a84cbf6199f685157cbdbde">AddMSinvZ</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;S, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;Z, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;X) const</td></tr>
<tr class="memdesc:afc97762a3a84cbf6199f685157cbdbde"><td class="mdescLeft">&#160;</td><td class="mdescRight">X = X + alpha*(<a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> S^{-1} Z).  <a href="classIpopt_1_1Matrix.html#afc97762a3a84cbf6199f685157cbdbde">More...</a><br /></td></tr>
<tr class="separator:afc97762a3a84cbf6199f685157cbdbde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9018485290c1478357a15c38a6ac560f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a9018485290c1478357a15c38a6ac560f">SinvBlrmZMTdBr</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;S, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;R, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;Z, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;D, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;X) const</td></tr>
<tr class="memdesc:a9018485290c1478357a15c38a6ac560f"><td class="mdescLeft">&#160;</td><td class="mdescRight">X = S^{-1} (r + alpha*Z*M^Td).  <a href="classIpopt_1_1Matrix.html#a9018485290c1478357a15c38a6ac560f">More...</a><br /></td></tr>
<tr class="separator:a9018485290c1478357a15c38a6ac560f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Information about the size of the matrix</div></td></tr>
<tr class="memitem:a266552e7da69b010fb9aff8852a89ce1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a266552e7da69b010fb9aff8852a89ce1">NRows</a> () const</td></tr>
<tr class="memdesc:a266552e7da69b010fb9aff8852a89ce1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of rows.  <a href="classIpopt_1_1Matrix.html#a266552e7da69b010fb9aff8852a89ce1">More...</a><br /></td></tr>
<tr class="separator:a266552e7da69b010fb9aff8852a89ce1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afda62c7ef10c09d8dde0e266ebd35dfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#afda62c7ef10c09d8dde0e266ebd35dfb">NCols</a> () const</td></tr>
<tr class="memdesc:afda62c7ef10c09d8dde0e266ebd35dfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of columns.  <a href="classIpopt_1_1Matrix.html#afda62c7ef10c09d8dde0e266ebd35dfb">More...</a><br /></td></tr>
<tr class="separator:afda62c7ef10c09d8dde0e266ebd35dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Norms of the individual rows and columns</div></td></tr>
<tr class="memitem:ae942dfdae208e6245d0dc8cefc23b19d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#ae942dfdae208e6245d0dc8cefc23b19d">ComputeRowAMax</a> (<a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;rows_norms, bool init=true) const</td></tr>
<tr class="memdesc:ae942dfdae208e6245d0dc8cefc23b19d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the max-norm of the rows in the matrix.  <a href="classIpopt_1_1Matrix.html#ae942dfdae208e6245d0dc8cefc23b19d">More...</a><br /></td></tr>
<tr class="separator:ae942dfdae208e6245d0dc8cefc23b19d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cfda747c0de5df22b89e4fa2fd55fd2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a0cfda747c0de5df22b89e4fa2fd55fd2">ComputeColAMax</a> (<a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;cols_norms, bool init=true) const</td></tr>
<tr class="memdesc:a0cfda747c0de5df22b89e4fa2fd55fd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the max-norm of the columns in the matrix.  <a href="classIpopt_1_1Matrix.html#a0cfda747c0de5df22b89e4fa2fd55fd2">More...</a><br /></td></tr>
<tr class="separator:a0cfda747c0de5df22b89e4fa2fd55fd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a629d848c8bce7b5ba61c68923306abc2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a629d848c8bce7b5ba61c68923306abc2">Print</a> (<a class="el" href="classIpopt_1_1SmartPtr.html">SmartPtr</a>&lt; const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &gt; jnlst, <a class="el" href="namespaceIpopt.html#a9a3bf04074c3113604067ee277e690ea">EJournalLevel</a> level, <a class="el" href="namespaceIpopt.html#a6cd36af5585112f521733f3e63fd8cb0">EJournalCategory</a> category, const std::string &amp;name, <a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a> indent=0, const std::string &amp;prefix=&quot;&quot;) const</td></tr>
<tr class="memdesc:a629d848c8bce7b5ba61c68923306abc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print detailed information about the matrix.  <a href="classIpopt_1_1Matrix.html#a629d848c8bce7b5ba61c68923306abc2">More...</a><br /></td></tr>
<tr class="separator:a629d848c8bce7b5ba61c68923306abc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abff9a35f26fef9057253a95105099d4d"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#abff9a35f26fef9057253a95105099d4d">Print</a> (const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;jnlst, <a class="el" href="namespaceIpopt.html#a9a3bf04074c3113604067ee277e690ea">EJournalLevel</a> level, <a class="el" href="namespaceIpopt.html#a6cd36af5585112f521733f3e63fd8cb0">EJournalCategory</a> category, const std::string &amp;name, <a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a> indent=0, const std::string &amp;prefix=&quot;&quot;) const</td></tr>
<tr class="separator:abff9a35f26fef9057253a95105099d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classIpopt_1_1TaggedObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classIpopt_1_1TaggedObject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classIpopt_1_1TaggedObject.html">Ipopt::TaggedObject</a></td></tr>
<tr class="memitem:a9a380b6da750fe0d63985a08bb329e7e inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1TaggedObject.html#a9a380b6da750fe0d63985a08bb329e7e">TaggedObject</a> ()</td></tr>
<tr class="memdesc:a9a380b6da750fe0d63985a08bb329e7e inherit pub_methods_classIpopt_1_1TaggedObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="classIpopt_1_1TaggedObject.html#a9a380b6da750fe0d63985a08bb329e7e">More...</a><br /></td></tr>
<tr class="separator:a9a380b6da750fe0d63985a08bb329e7e inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec96b8d790bf8ce7c707b55824796210 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1TaggedObject.html#aec96b8d790bf8ce7c707b55824796210">~TaggedObject</a> ()</td></tr>
<tr class="memdesc:aec96b8d790bf8ce7c707b55824796210 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="classIpopt_1_1TaggedObject.html#aec96b8d790bf8ce7c707b55824796210">More...</a><br /></td></tr>
<tr class="separator:aec96b8d790bf8ce7c707b55824796210 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a352e0245b4505a0b6190a6417da087f7 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1TaggedObject.html#a6295578d16e7272fd040f02806d72afc">Tag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1TaggedObject.html#a352e0245b4505a0b6190a6417da087f7">GetTag</a> () const</td></tr>
<tr class="memdesc:a352e0245b4505a0b6190a6417da087f7 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Users of TaggedObjects call this to update their own internal tags every time they perform the expensive operation.  <a href="classIpopt_1_1TaggedObject.html#a352e0245b4505a0b6190a6417da087f7">More...</a><br /></td></tr>
<tr class="separator:a352e0245b4505a0b6190a6417da087f7 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6179c02755cba8456d611a0d469a9c70 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1TaggedObject.html#a6179c02755cba8456d611a0d469a9c70">HasChanged</a> (const <a class="el" href="classIpopt_1_1TaggedObject.html#a6295578d16e7272fd040f02806d72afc">Tag</a> comparison_tag) const</td></tr>
<tr class="memdesc:a6179c02755cba8456d611a0d469a9c70 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Users of TaggedObjects call this to check if the object HasChanged since they last updated their own internal tag.  <a href="classIpopt_1_1TaggedObject.html#a6179c02755cba8456d611a0d469a9c70">More...</a><br /></td></tr>
<tr class="separator:a6179c02755cba8456d611a0d469a9c70 inherit pub_methods_classIpopt_1_1TaggedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classIpopt_1_1ReferencedObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classIpopt_1_1ReferencedObject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classIpopt_1_1ReferencedObject.html">Ipopt::ReferencedObject</a></td></tr>
<tr class="memitem:a5c0f2208e3ead22bf7c5179381ed8203 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#a5c0f2208e3ead22bf7c5179381ed8203">ReferencedObject</a> ()</td></tr>
<tr class="separator:a5c0f2208e3ead22bf7c5179381ed8203 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbbf3aa5307da62ab8224ba599d4bd7a inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#adbbf3aa5307da62ab8224ba599d4bd7a">~ReferencedObject</a> ()</td></tr>
<tr class="separator:adbbf3aa5307da62ab8224ba599d4bd7a inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac517534e10e36c946aeefc6fe337777 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#aac517534e10e36c946aeefc6fe337777">ReferenceCount</a> () const</td></tr>
<tr class="separator:aac517534e10e36c946aeefc6fe337777 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa69ecb0f026bd741e2fa84c31d4ec332 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#aa69ecb0f026bd741e2fa84c31d4ec332">AddRef</a> (const <a class="el" href="classIpopt_1_1Referencer.html">Referencer</a> *referencer) const</td></tr>
<tr class="separator:aa69ecb0f026bd741e2fa84c31d4ec332 inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6c952e7d1a63080dc8f121c008944fc inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1ReferencedObject.html#ae6c952e7d1a63080dc8f121c008944fc">ReleaseRef</a> (const <a class="el" href="classIpopt_1_1Referencer.html">Referencer</a> *referencer) const</td></tr>
<tr class="separator:ae6c952e7d1a63080dc8f121c008944fc inherit pub_methods_classIpopt_1_1ReferencedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classIpopt_1_1Subject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classIpopt_1_1Subject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classIpopt_1_1Subject.html">Ipopt::Subject</a></td></tr>
<tr class="memitem:a547af0012802082f3d7b869041bfabaf inherit pub_methods_classIpopt_1_1Subject"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Subject.html#a547af0012802082f3d7b869041bfabaf">Subject</a> ()</td></tr>
<tr class="memdesc:a547af0012802082f3d7b869041bfabaf inherit pub_methods_classIpopt_1_1Subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Constructor.  <a href="classIpopt_1_1Subject.html#a547af0012802082f3d7b869041bfabaf">More...</a><br /></td></tr>
<tr class="separator:a547af0012802082f3d7b869041bfabaf inherit pub_methods_classIpopt_1_1Subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb4a5e05cc2afd41064985d55d96f6d inherit pub_methods_classIpopt_1_1Subject"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Subject.html#abdb4a5e05cc2afd41064985d55d96f6d">~Subject</a> ()</td></tr>
<tr class="memdesc:abdb4a5e05cc2afd41064985d55d96f6d inherit pub_methods_classIpopt_1_1Subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="classIpopt_1_1Subject.html#abdb4a5e05cc2afd41064985d55d96f6d">More...</a><br /></td></tr>
<tr class="separator:abdb4a5e05cc2afd41064985d55d96f6d inherit pub_methods_classIpopt_1_1Subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a5d0d8fa91fa9cea12e53682ad82042 inherit pub_methods_classIpopt_1_1Subject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Subject.html#a7a5d0d8fa91fa9cea12e53682ad82042">AttachObserver</a> (<a class="el" href="classIpopt_1_1Observer.html#a828a9e0833e87e84bef75d05bf0a99b8">Observer::NotifyType</a> notify_type, <a class="el" href="classIpopt_1_1Observer.html">Observer</a> *observer) const</td></tr>
<tr class="memdesc:a7a5d0d8fa91fa9cea12e53682ad82042 inherit pub_methods_classIpopt_1_1Subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach the specified observer (i.e., begin receiving notifications).  <a href="classIpopt_1_1Subject.html#a7a5d0d8fa91fa9cea12e53682ad82042">More...</a><br /></td></tr>
<tr class="separator:a7a5d0d8fa91fa9cea12e53682ad82042 inherit pub_methods_classIpopt_1_1Subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a907d18f260ed26a5549538f3c09e5f56 inherit pub_methods_classIpopt_1_1Subject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Subject.html#a907d18f260ed26a5549538f3c09e5f56">DetachObserver</a> (<a class="el" href="classIpopt_1_1Observer.html#a828a9e0833e87e84bef75d05bf0a99b8">Observer::NotifyType</a> notify_type, <a class="el" href="classIpopt_1_1Observer.html">Observer</a> *observer) const</td></tr>
<tr class="memdesc:a907d18f260ed26a5549538f3c09e5f56 inherit pub_methods_classIpopt_1_1Subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detach the specified observer (i.e., no longer receive notifications).  <a href="classIpopt_1_1Subject.html#a907d18f260ed26a5549538f3c09e5f56">More...</a><br /></td></tr>
<tr class="separator:a907d18f260ed26a5549538f3c09e5f56 inherit pub_methods_classIpopt_1_1Subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">implementation methods (derived classes MUST</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>overload these pure virtual protected methods). </p>
</div></td></tr>
<tr class="memitem:a3685c492bfb7e39480088edcf257ee65"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a3685c492bfb7e39480088edcf257ee65">MultVectorImpl</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;x, <a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> beta, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;y) const =0</td></tr>
<tr class="memdesc:a3685c492bfb7e39480088edcf257ee65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-vector multiply.  <a href="classIpopt_1_1Matrix.html#a3685c492bfb7e39480088edcf257ee65">More...</a><br /></td></tr>
<tr class="separator:a3685c492bfb7e39480088edcf257ee65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3da21b84432123506e9f20ed77014da1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a3da21b84432123506e9f20ed77014da1">TransMultVectorImpl</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;x, <a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> beta, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;y) const =0</td></tr>
<tr class="memdesc:a3da21b84432123506e9f20ed77014da1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix(transpose) vector multiply.  <a href="classIpopt_1_1Matrix.html#a3da21b84432123506e9f20ed77014da1">More...</a><br /></td></tr>
<tr class="separator:a3da21b84432123506e9f20ed77014da1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa297b0e82ef3a40c57de1b0884886620"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#aa297b0e82ef3a40c57de1b0884886620">AddMSinvZImpl</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;S, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;Z, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;X) const</td></tr>
<tr class="memdesc:aa297b0e82ef3a40c57de1b0884886620"><td class="mdescLeft">&#160;</td><td class="mdescRight">X = X + alpha*(<a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> S^{-1} Z).  <a href="classIpopt_1_1Matrix.html#aa297b0e82ef3a40c57de1b0884886620">More...</a><br /></td></tr>
<tr class="separator:aa297b0e82ef3a40c57de1b0884886620"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecc33a7316f28f7d59c3e69d511d694a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#aecc33a7316f28f7d59c3e69d511d694a">SinvBlrmZMTdBrImpl</a> (<a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a> alpha, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;S, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;R, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;Z, const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;D, <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;X) const</td></tr>
<tr class="memdesc:aecc33a7316f28f7d59c3e69d511d694a"><td class="mdescLeft">&#160;</td><td class="mdescRight">X = S^{-1} (r + alpha*Z*M^Td).  <a href="classIpopt_1_1Matrix.html#aecc33a7316f28f7d59c3e69d511d694a">More...</a><br /></td></tr>
<tr class="separator:aecc33a7316f28f7d59c3e69d511d694a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae301c3ef085d23a4d564717d74bf123f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#ae301c3ef085d23a4d564717d74bf123f">HasValidNumbersImpl</a> () const</td></tr>
<tr class="memdesc:ae301c3ef085d23a4d564717d74bf123f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Method for determining if all stored numbers are valid (i.e., no Inf or Nan).  <a href="classIpopt_1_1Matrix.html#ae301c3ef085d23a4d564717d74bf123f">More...</a><br /></td></tr>
<tr class="separator:ae301c3ef085d23a4d564717d74bf123f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3bbcb2070641e08b8ed114a22d7f0fc"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#aa3bbcb2070641e08b8ed114a22d7f0fc">ComputeRowAMaxImpl</a> (<a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;rows_norms, bool init) const =0</td></tr>
<tr class="memdesc:aa3bbcb2070641e08b8ed114a22d7f0fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the max-norm of the rows in the matrix.  <a href="classIpopt_1_1Matrix.html#aa3bbcb2070641e08b8ed114a22d7f0fc">More...</a><br /></td></tr>
<tr class="separator:aa3bbcb2070641e08b8ed114a22d7f0fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af09c4d60a35f688751f91b39068a5fd0"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#af09c4d60a35f688751f91b39068a5fd0">ComputeColAMaxImpl</a> (<a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;cols_norms, bool init) const =0</td></tr>
<tr class="memdesc:af09c4d60a35f688751f91b39068a5fd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the max-norm of the columns in the matrix.  <a href="classIpopt_1_1Matrix.html#af09c4d60a35f688751f91b39068a5fd0">More...</a><br /></td></tr>
<tr class="separator:af09c4d60a35f688751f91b39068a5fd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae00a00b05132ec2b9213eaf3e148f381"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#ae00a00b05132ec2b9213eaf3e148f381">PrintImpl</a> (const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;jnlst, <a class="el" href="namespaceIpopt.html#a9a3bf04074c3113604067ee277e690ea">EJournalLevel</a> level, <a class="el" href="namespaceIpopt.html#a6cd36af5585112f521733f3e63fd8cb0">EJournalCategory</a> category, const std::string &amp;name, <a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a> indent, const std::string &amp;prefix) const =0</td></tr>
<tr class="memdesc:ae00a00b05132ec2b9213eaf3e148f381"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print detailed information about the matrix.  <a href="classIpopt_1_1Matrix.html#ae00a00b05132ec2b9213eaf3e148f381">More...</a><br /></td></tr>
<tr class="separator:ae00a00b05132ec2b9213eaf3e148f381"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classIpopt_1_1TaggedObject"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classIpopt_1_1TaggedObject')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classIpopt_1_1TaggedObject.html">Ipopt::TaggedObject</a></td></tr>
<tr class="memitem:a427557597cbad74331b748d2a1c72623 inherit pro_methods_classIpopt_1_1TaggedObject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1TaggedObject.html#a427557597cbad74331b748d2a1c72623">ObjectChanged</a> ()</td></tr>
<tr class="memdesc:a427557597cbad74331b748d2a1c72623 inherit pro_methods_classIpopt_1_1TaggedObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Objects derived from <a class="el" href="classIpopt_1_1TaggedObject.html" title="TaggedObject class.">TaggedObject</a> MUST call this method every time their internal state changes to update the internal tag for comparison.  <a href="classIpopt_1_1TaggedObject.html#a427557597cbad74331b748d2a1c72623">More...</a><br /></td></tr>
<tr class="separator:a427557597cbad74331b748d2a1c72623 inherit pro_methods_classIpopt_1_1TaggedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classIpopt_1_1Subject"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classIpopt_1_1Subject')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classIpopt_1_1Subject.html">Ipopt::Subject</a></td></tr>
<tr class="memitem:a001f4269d74149f9d45930ef7102c0a4 inherit pro_methods_classIpopt_1_1Subject"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Subject.html#a001f4269d74149f9d45930ef7102c0a4">Notify</a> (<a class="el" href="classIpopt_1_1Observer.html#a828a9e0833e87e84bef75d05bf0a99b8">Observer::NotifyType</a> notify_type) const</td></tr>
<tr class="separator:a001f4269d74149f9d45930ef7102c0a4 inherit pro_methods_classIpopt_1_1Subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Default Compiler Generated Methods</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>(Hidden to avoid implicit creation/calling).</p>
<p>These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called. </p>
</div></td></tr>
<tr class="memitem:ad9088cf18151e86939963014f83fd337"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#ad9088cf18151e86939963014f83fd337">Matrix</a> ()</td></tr>
<tr class="memdesc:ad9088cf18151e86939963014f83fd337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="classIpopt_1_1Matrix.html#ad9088cf18151e86939963014f83fd337">More...</a><br /></td></tr>
<tr class="separator:ad9088cf18151e86939963014f83fd337"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bdc06badbcd9f995ba6c47d7fed8b59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a9bdc06badbcd9f995ba6c47d7fed8b59">Matrix</a> (const <a class="el" href="classIpopt_1_1Matrix.html">Matrix</a> &amp;)</td></tr>
<tr class="memdesc:a9bdc06badbcd9f995ba6c47d7fed8b59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor.  <a href="classIpopt_1_1Matrix.html#a9bdc06badbcd9f995ba6c47d7fed8b59">More...</a><br /></td></tr>
<tr class="separator:a9bdc06badbcd9f995ba6c47d7fed8b59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaf10d9d3a27e7c46f3bc06287ed1166"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1Matrix.html">Matrix</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#afaf10d9d3a27e7c46f3bc06287ed1166">operator=</a> (const <a class="el" href="classIpopt_1_1Matrix.html">Matrix</a> &amp;)</td></tr>
<tr class="memdesc:afaf10d9d3a27e7c46f3bc06287ed1166"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Assignment Operator.  <a href="classIpopt_1_1Matrix.html#afaf10d9d3a27e7c46f3bc06287ed1166">More...</a><br /></td></tr>
<tr class="separator:afaf10d9d3a27e7c46f3bc06287ed1166"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a145253a245865d9f785cff82eee561f3"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classIpopt_1_1SmartPtr.html">SmartPtr</a>&lt; const <a class="el" href="classIpopt_1_1MatrixSpace.html">MatrixSpace</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a145253a245865d9f785cff82eee561f3">owner_space_</a></td></tr>
<tr class="separator:a145253a245865d9f785cff82eee561f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">CachedResults data members</div></td></tr>
<tr class="memitem:a64d5a993c8840f716e1e91c44b89ed02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIpopt_1_1TaggedObject.html#a6295578d16e7272fd040f02806d72afc">TaggedObject::Tag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a64d5a993c8840f716e1e91c44b89ed02">valid_cache_tag_</a></td></tr>
<tr class="separator:a64d5a993c8840f716e1e91c44b89ed02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a831343d02d2ca02bf7e8f935670b364d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1Matrix.html#a831343d02d2ca02bf7e8f935670b364d">cached_valid_</a></td></tr>
<tr class="separator:a831343d02d2ca02bf7e8f935670b364d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classIpopt_1_1TaggedObject"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classIpopt_1_1TaggedObject')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classIpopt_1_1TaggedObject.html">Ipopt::TaggedObject</a></td></tr>
<tr class="memitem:a6295578d16e7272fd040f02806d72afc inherit pub_types_classIpopt_1_1TaggedObject"><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIpopt_1_1TaggedObject.html#a6295578d16e7272fd040f02806d72afc">Tag</a></td></tr>
<tr class="memdesc:a6295578d16e7272fd040f02806d72afc inherit pub_types_classIpopt_1_1TaggedObject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the Tag values.  <a href="classIpopt_1_1TaggedObject.html#a6295578d16e7272fd040f02806d72afc">More...</a><br /></td></tr>
<tr class="separator:a6295578d16e7272fd040f02806d72afc inherit pub_types_classIpopt_1_1TaggedObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> Base Class. </p>
<p>This is the base class for all derived matrix types. All Matrices, such as Jacobian and Hessian matrices, as well as possibly the iteration matrices needed for the step computation, are of this type.</p>
<p>Deriving from <a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a>: Overload the protected XXX_Impl method. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00027">27</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab0b431ce35e567a20f14ff86f99c44cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0b431ce35e567a20f14ff86f99c44cd">&#9670;&nbsp;</a></span>Matrix() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Ipopt::Matrix::Matrix </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1MatrixSpace.html">MatrixSpace</a> *&#160;</td>
          <td class="paramname"><em>owner_space</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>It has to be given a pointer to the corresponding <a class="el" href="classIpopt_1_1MatrixSpace.html" title="MatrixSpace base class, corresponding to the Matrix base class.">MatrixSpace</a>. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00036">36</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a75d15527c1f0f957f740d02028aee9c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75d15527c1f0f957f740d02028aee9c1">&#9670;&nbsp;</a></span>~Matrix()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual Ipopt::Matrix::~Matrix </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Destructor. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00045">45</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="ad9088cf18151e86939963014f83fd337"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9088cf18151e86939963014f83fd337">&#9670;&nbsp;</a></span>Matrix() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Ipopt::Matrix::Matrix </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default constructor. </p>

</div>
</div>
<a id="a9bdc06badbcd9f995ba6c47d7fed8b59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bdc06badbcd9f995ba6c47d7fed8b59">&#9670;&nbsp;</a></span>Matrix() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Ipopt::Matrix::Matrix </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Matrix.html">Matrix</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Copy constructor. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac91a33547004104f5ed34e1047896930"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac91a33547004104f5ed34e1047896930">&#9670;&nbsp;</a></span>MultVector()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::Matrix::MultVector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>beta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Matrix-vector multiply. </p>
<p>Computes y = alpha * <a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> * x + beta * y.</p>
<dl class="section attention"><dt>Attention</dt><dd>Do not overload. Overload MultVectorImpl instead. </dd></dl>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00057">57</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a603c24db27adb3502ee675ad75fb8dfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a603c24db27adb3502ee675ad75fb8dfd">&#9670;&nbsp;</a></span>TransMultVector()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::Matrix::TransMultVector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>beta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Matrix(transpose) vector multiply. </p>
<p>Computes y = alpha * Matrix^T * x + beta * y.</p>
<dl class="section attention"><dt>Attention</dt><dd>Do not overload. Overload TransMultVectorImpl instead. </dd></dl>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00073">73</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="afc97762a3a84cbf6199f685157cbdbde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc97762a3a84cbf6199f685157cbdbde">&#9670;&nbsp;</a></span>AddMSinvZ()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::Matrix::AddMSinvZ </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>S</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>Z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>X = X + alpha*(<a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> S^{-1} Z). </p>
<p>Should be implemented efficiently for the <a class="el" href="classIpopt_1_1ExpansionMatrix.html" title="Class for expansion/projection matrices.">ExpansionMatrix</a>. </p>

</div>
</div>
<a id="a9018485290c1478357a15c38a6ac560f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9018485290c1478357a15c38a6ac560f">&#9670;&nbsp;</a></span>SinvBlrmZMTdBr()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::Matrix::SinvBlrmZMTdBr </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>S</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>Z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>X = S^{-1} (r + alpha*Z*M^Td). </p>
<p>Should be implemented efficiently for the <a class="el" href="classIpopt_1_1ExpansionMatrix.html" title="Class for expansion/projection matrices.">ExpansionMatrix</a>. </p>

</div>
</div>
<a id="a16f834a2deb289b60e4dc7236a4c2800"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16f834a2deb289b60e4dc7236a4c2800">&#9670;&nbsp;</a></span>HasValidNumbers()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Ipopt::Matrix::HasValidNumbers </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Method for determining if all stored numbers are valid (i.e., no Inf or Nan). </p>

</div>
</div>
<a id="a266552e7da69b010fb9aff8852a89ce1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a266552e7da69b010fb9aff8852a89ce1">&#9670;&nbsp;</a></span>NRows()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a> Ipopt::Matrix::NRows </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Number of rows. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00401">401</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="afda62c7ef10c09d8dde0e266ebd35dfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afda62c7ef10c09d8dde0e266ebd35dfb">&#9670;&nbsp;</a></span>NCols()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a> Ipopt::Matrix::NCols </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Number of columns. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00406">406</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="ae942dfdae208e6245d0dc8cefc23b19d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae942dfdae208e6245d0dc8cefc23b19d">&#9670;&nbsp;</a></span>ComputeRowAMax()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::Matrix::ComputeRowAMax </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>rows_norms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>init</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute the max-norm of the rows in the matrix. </p>
<p>The result is stored in rows_norms. The vector is assumed to be initialized if init is false. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00134">134</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a0cfda747c0de5df22b89e4fa2fd55fd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cfda747c0de5df22b89e4fa2fd55fd2">&#9670;&nbsp;</a></span>ComputeColAMax()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Ipopt::Matrix::ComputeColAMax </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>cols_norms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>init</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute the max-norm of the columns in the matrix. </p>
<p>The result is stored in cols_norms. The vector is assumed to be initialized if init is false. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00152">152</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a629d848c8bce7b5ba61c68923306abc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a629d848c8bce7b5ba61c68923306abc2">&#9670;&nbsp;</a></span>Print() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::Print </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1SmartPtr.html">SmartPtr</a>&lt; const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &gt;&#160;</td>
          <td class="paramname"><em>jnlst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a9a3bf04074c3113604067ee277e690ea">EJournalLevel</a>&#160;</td>
          <td class="paramname"><em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a6cd36af5585112f521733f3e63fd8cb0">EJournalCategory</a>&#160;</td>
          <td class="paramname"><em>category</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td>
          <td class="paramname"><em>indent</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>prefix</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Print detailed information about the matrix. </p>
<dl class="section attention"><dt>Attention</dt><dd>Do not overload. Overload PrintImpl instead. </dd></dl>

</div>
</div>
<a id="abff9a35f26fef9057253a95105099d4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abff9a35f26fef9057253a95105099d4d">&#9670;&nbsp;</a></span>Print() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::Print </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;&#160;</td>
          <td class="paramname"><em>jnlst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a9a3bf04074c3113604067ee277e690ea">EJournalLevel</a>&#160;</td>
          <td class="paramname"><em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a6cd36af5585112f521733f3e63fd8cb0">EJournalCategory</a>&#160;</td>
          <td class="paramname"><em>category</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td>
          <td class="paramname"><em>indent</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>prefix</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a799d8eeb94b851d31928eac1cc67fc4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a799d8eeb94b851d31928eac1cc67fc4d">&#9670;&nbsp;</a></span>OwnerSpace()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classIpopt_1_1SmartPtr.html">SmartPtr</a>&lt; const <a class="el" href="classIpopt_1_1MatrixSpace.html">MatrixSpace</a> &gt; Ipopt::Matrix::OwnerSpace </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Return the owner <a class="el" href="classIpopt_1_1MatrixSpace.html" title="MatrixSpace base class, corresponding to the Matrix base class.">MatrixSpace</a>. </p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00411">411</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a3685c492bfb7e39480088edcf257ee65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3685c492bfb7e39480088edcf257ee65">&#9670;&nbsp;</a></span>MultVectorImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::MultVectorImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>beta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Matrix-vector multiply. </p>
<p>Computes y = alpha * <a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> * x + beta * y. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1DenseGenMatrix.html#ae57e5d48df2d7d548aeb6a99e29f8df9">Ipopt::DenseGenMatrix</a>, <a class="el" href="classIpopt_1_1MultiVectorMatrix.html#a04b058a62cf3be3c1081fe61b83d6a55">Ipopt::MultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1DenseSymMatrix.html#ad9a5049463286a32ceeb23c04657e5b5">Ipopt::DenseSymMatrix</a>, <a class="el" href="classIpopt_1_1SymTMatrix.html#adb529c784dd27766d1f736fef9d90dc3">Ipopt::SymTMatrix</a>, <a class="el" href="classIpopt_1_1CompoundMatrix.html#ab6c304af387ecdc13e03b92900a9d15e">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1CompoundSymMatrix.html#a70267cfdad26ffb34a9ec235aa262cef">Ipopt::CompoundSymMatrix</a>, <a class="el" href="classIpopt_1_1LowRankUpdateSymMatrix.html#a977919cdb76239ceed9e7cfd5591cc3a">Ipopt::LowRankUpdateSymMatrix</a>, <a class="el" href="classIpopt_1_1GenTMatrix.html#aea3b3fbbb95936d404f9d59ffa581631">Ipopt::GenTMatrix</a>, <a class="el" href="classIpopt_1_1ExpandedMultiVectorMatrix.html#aca00f9a1907204fb64222ad3fc60f493">Ipopt::ExpandedMultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1ExpansionMatrix.html#a7c59f5604746f1b4359b7b421f03a83f">Ipopt::ExpansionMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#a7e90623bee1836249213fc18cdc0ff1c">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1SumSymMatrix.html#aa582fe1eea940d35001daf078c2986f7">Ipopt::SumSymMatrix</a>, <a class="el" href="classIpopt_1_1SymScaledMatrix.html#a42c01e32d6991d2219123715dfb2bff8">Ipopt::SymScaledMatrix</a>, <a class="el" href="classIpopt_1_1SumMatrix.html#a428130ebd06e235bdcc94b48010ef067">Ipopt::SumMatrix</a>, <a class="el" href="classIpopt_1_1IdentityMatrix.html#acd7d7a8c22747324ffeeedec72eb9d75">Ipopt::IdentityMatrix</a>, <a class="el" href="classIpopt_1_1DiagMatrix.html#ad8ea3d7f1b2174b4c615b94bda0ceea5">Ipopt::DiagMatrix</a>, <a class="el" href="classIpopt_1_1TransposeMatrix.html#ae3a04553635dc8e39e2f5a7ec495c764">Ipopt::TransposeMatrix</a>, <a class="el" href="classIpopt_1_1ZeroMatrix.html#a958710911342555b7920c204ca9346ba">Ipopt::ZeroMatrix</a>, and <a class="el" href="classIpopt_1_1ZeroSymMatrix.html#af3ddd83da73713c01e69158c3e3174ec">Ipopt::ZeroSymMatrix</a>.</p>

</div>
</div>
<a id="a3da21b84432123506e9f20ed77014da1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3da21b84432123506e9f20ed77014da1">&#9670;&nbsp;</a></span>TransMultVectorImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::TransMultVectorImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>beta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Matrix(transpose) vector multiply. </p>
<p>Computes y = alpha * Matrix^T * x + beta * y. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1DenseGenMatrix.html#a96bcfc9610f0311cf6f1bc0a1801ee8b">Ipopt::DenseGenMatrix</a>, <a class="el" href="classIpopt_1_1MultiVectorMatrix.html#a48392d423a633c69e713980d439d8840">Ipopt::MultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1CompoundMatrix.html#a099244478ac2362a8d6aa97fbd8a397c">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1GenTMatrix.html#a41ad429c7467cfa1e2756b9ea539deb1">Ipopt::GenTMatrix</a>, <a class="el" href="classIpopt_1_1ExpandedMultiVectorMatrix.html#a8332771af49ffc7a19f0897b1801b22d">Ipopt::ExpandedMultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1ExpansionMatrix.html#a9dbdb4f7fe2ac8d1875088c689e65ee8">Ipopt::ExpansionMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#ad1e533c07de4b43447af838af9de63b2">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1SumMatrix.html#aa863f703752b6722394987f54fd614c1">Ipopt::SumMatrix</a>, <a class="el" href="classIpopt_1_1SymMatrix.html#ae12047b0b15f7e9a517bc290d0160291">Ipopt::SymMatrix</a>, <a class="el" href="classIpopt_1_1TransposeMatrix.html#ac32e4ad00e154500f5de7b6c6324a329">Ipopt::TransposeMatrix</a>, <a class="el" href="classIpopt_1_1ZeroMatrix.html#a10480b6254d61b12c7c9921b15b9c9ce">Ipopt::ZeroMatrix</a>, and <a class="el" href="classIpopt_1_1ZeroSymMatrix.html#a1b9ae2b2ca3c0c4405ff1ef1507228b9">Ipopt::ZeroSymMatrix</a>.</p>

</div>
</div>
<a id="aa297b0e82ef3a40c57de1b0884886620"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa297b0e82ef3a40c57de1b0884886620">&#9670;&nbsp;</a></span>AddMSinvZImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::AddMSinvZImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>S</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>Z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>X = X + alpha*(<a class="el" href="classIpopt_1_1Matrix.html" title="Matrix Base Class.">Matrix</a> S^{-1} Z). </p>
<p>Prototype for this specialize method is provided, but for efficient implementation it should be overloaded for the expansion matrix. </p>

<p>Reimplemented in <a class="el" href="classIpopt_1_1CompoundMatrix.html#aa40d0a590da4c99a64c99a165c75f079">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#ae892c28c3e7723b8cd5084e9e07850c3">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1ExpansionMatrix.html#adc62d0677e811537df146d36ba76c5fd">Ipopt::ExpansionMatrix</a>, and <a class="el" href="classIpopt_1_1IdentityMatrix.html#a2bc90d6a9b0e8b1b7d007cacd4c6fd8a">Ipopt::IdentityMatrix</a>.</p>

</div>
</div>
<a id="aecc33a7316f28f7d59c3e69d511d694a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aecc33a7316f28f7d59c3e69d511d694a">&#9670;&nbsp;</a></span>SinvBlrmZMTdBrImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::SinvBlrmZMTdBrImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#ab75ce5f2ad60aa86e4dff723998e653f">Number</a>&#160;</td>
          <td class="paramname"><em>alpha</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>S</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>Z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>D</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>X = S^{-1} (r + alpha*Z*M^Td). </p>
<p>Should be implemented efficiently for the <a class="el" href="classIpopt_1_1ExpansionMatrix.html" title="Class for expansion/projection matrices.">ExpansionMatrix</a>. </p>

<p>Reimplemented in <a class="el" href="classIpopt_1_1CompoundMatrix.html#a6dd7373cc6fa8120458177393ef7a665">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#a61289100b9013beca399d49f2187c8c3">Ipopt::ScaledMatrix</a>, and <a class="el" href="classIpopt_1_1ExpansionMatrix.html#a14fd96dce51f00156ce05e7c8d035c88">Ipopt::ExpansionMatrix</a>.</p>

</div>
</div>
<a id="ae301c3ef085d23a4d564717d74bf123f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae301c3ef085d23a4d564717d74bf123f">&#9670;&nbsp;</a></span>HasValidNumbersImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool Ipopt::Matrix::HasValidNumbersImpl </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Method for determining if all stored numbers are valid (i.e., no Inf or Nan). </p>
<p>A default implementation always returning true is provided, but if possible it should be implemented. </p>

<p>Reimplemented in <a class="el" href="classIpopt_1_1DenseGenMatrix.html#af8c11823a281f5670298448a79d728b6">Ipopt::DenseGenMatrix</a>, <a class="el" href="classIpopt_1_1MultiVectorMatrix.html#abedeaa1f8442a208bdec2395c1c9d8a4">Ipopt::MultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1CompoundMatrix.html#ae42e47ad9da90bd04ed593ab9af60c82">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1DenseSymMatrix.html#a003c9d13b8379bb5e11fc4c726a09886">Ipopt::DenseSymMatrix</a>, <a class="el" href="classIpopt_1_1SymTMatrix.html#a45ea3660b36b64c75a0b3b233cc35b0a">Ipopt::SymTMatrix</a>, <a class="el" href="classIpopt_1_1CompoundSymMatrix.html#affdb270bd612ee14688b8626301173e7">Ipopt::CompoundSymMatrix</a>, <a class="el" href="classIpopt_1_1LowRankUpdateSymMatrix.html#a85366be8555fc1ea05789e3b2f129216">Ipopt::LowRankUpdateSymMatrix</a>, <a class="el" href="classIpopt_1_1GenTMatrix.html#a4321c51c1d7ba1b53cbcd36eb0722a8c">Ipopt::GenTMatrix</a>, <a class="el" href="classIpopt_1_1ExpandedMultiVectorMatrix.html#a2727c6c241988b340e0caaaf91615d04">Ipopt::ExpandedMultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#a9cd26b5aac2c1dfcc2b432aad61529f3">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1SumMatrix.html#adfcb83fc0b31dc57a6684f4cd46e6bf6">Ipopt::SumMatrix</a>, <a class="el" href="classIpopt_1_1SumSymMatrix.html#a816ef9c9cfd7e2042d5b52c4c445bf88">Ipopt::SumSymMatrix</a>, <a class="el" href="classIpopt_1_1SymScaledMatrix.html#aec3aaa5cebe937572a31cfab8a386c71">Ipopt::SymScaledMatrix</a>, <a class="el" href="classIpopt_1_1IdentityMatrix.html#a6283ba51d4000dfa45e683e8612f7f62">Ipopt::IdentityMatrix</a>, <a class="el" href="classIpopt_1_1TransposeMatrix.html#a1af8f5981cf62747e65130fb94de19ef">Ipopt::TransposeMatrix</a>, and <a class="el" href="classIpopt_1_1DiagMatrix.html#aecf09dffdd763a158c4ff97f1f954bda">Ipopt::DiagMatrix</a>.</p>

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00250">250</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="aa3bbcb2070641e08b8ed114a22d7f0fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3bbcb2070641e08b8ed114a22d7f0fc">&#9670;&nbsp;</a></span>ComputeRowAMaxImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::ComputeRowAMaxImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>rows_norms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>init</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute the max-norm of the rows in the matrix. </p>
<p>The result is stored in rows_norms. The vector is assumed to be initialized if init is false. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1DenseGenMatrix.html#a796186ad9306b491b4438b94a456faea">Ipopt::DenseGenMatrix</a>, <a class="el" href="classIpopt_1_1MultiVectorMatrix.html#a215f036fadae290e78849076c932e919">Ipopt::MultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1CompoundMatrix.html#a0ad5ba42456c881d8c37ff8e8be690e6">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1DenseSymMatrix.html#a73eb2c28ba3eaa9eb6b2de24ea38ba3f">Ipopt::DenseSymMatrix</a>, <a class="el" href="classIpopt_1_1SymTMatrix.html#a392a539a999134fc3aa9995a07ab5f1c">Ipopt::SymTMatrix</a>, <a class="el" href="classIpopt_1_1CompoundSymMatrix.html#a3c7647e0919f1dd142fd9f0373c1c0ca">Ipopt::CompoundSymMatrix</a>, <a class="el" href="classIpopt_1_1LowRankUpdateSymMatrix.html#accae43620ee0625fff5c01d9e44b7f27">Ipopt::LowRankUpdateSymMatrix</a>, <a class="el" href="classIpopt_1_1GenTMatrix.html#a79633ceaf16c4f776a522cadfcf094cd">Ipopt::GenTMatrix</a>, <a class="el" href="classIpopt_1_1ExpansionMatrix.html#a5259d077677bd22360fd5c1f4c4cde6f">Ipopt::ExpansionMatrix</a>, <a class="el" href="classIpopt_1_1ExpandedMultiVectorMatrix.html#ac2fae552ad22104a457518c661bd1af6">Ipopt::ExpandedMultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#a345588ea8f474db6230c89d28406b5c9">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1SumMatrix.html#ae6456067030f748e0edd21dc6d5b0f1a">Ipopt::SumMatrix</a>, <a class="el" href="classIpopt_1_1SumSymMatrix.html#a555d91c81d93516aba9e8aac4c82818c">Ipopt::SumSymMatrix</a>, <a class="el" href="classIpopt_1_1SymScaledMatrix.html#a762d28e3cb0eabe80ccd8e3c1a90825b">Ipopt::SymScaledMatrix</a>, <a class="el" href="classIpopt_1_1TransposeMatrix.html#a27a48794f2d44b672359c77d12255ad9">Ipopt::TransposeMatrix</a>, <a class="el" href="classIpopt_1_1IdentityMatrix.html#a73f800d9f75bd3171a7f8ea4b9e03ddf">Ipopt::IdentityMatrix</a>, <a class="el" href="classIpopt_1_1DiagMatrix.html#a563568cd907b028ded5221322ccb114c">Ipopt::DiagMatrix</a>, <a class="el" href="classIpopt_1_1ZeroMatrix.html#a070cd7db8edf819d52f63afb5f5a1faa">Ipopt::ZeroMatrix</a>, and <a class="el" href="classIpopt_1_1ZeroSymMatrix.html#aeb868265d875e41da27b971b09143e24">Ipopt::ZeroSymMatrix</a>.</p>

</div>
</div>
<a id="af09c4d60a35f688751f91b39068a5fd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af09c4d60a35f688751f91b39068a5fd0">&#9670;&nbsp;</a></span>ComputeColAMaxImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::ComputeColAMaxImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classIpopt_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>cols_norms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>init</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute the max-norm of the columns in the matrix. </p>
<p>The result is stored in cols_norms. The vector is assumed to be initialized if init is false. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1TransposeMatrix.html#a05ec87ae7381b9a1a0f1f672d8137d28">Ipopt::TransposeMatrix</a>, <a class="el" href="classIpopt_1_1DenseGenMatrix.html#a46dd833fc45ca12c28b91ec5d506a6fd">Ipopt::DenseGenMatrix</a>, <a class="el" href="classIpopt_1_1MultiVectorMatrix.html#ad1eb04bd384471b81afec75e7bc6bcdb">Ipopt::MultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1CompoundMatrix.html#a7b656c12b674650946831f82150d8f32">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1LowRankUpdateSymMatrix.html#a6f68e4708411f539f82a31eb1fa69307">Ipopt::LowRankUpdateSymMatrix</a>, <a class="el" href="classIpopt_1_1GenTMatrix.html#ada0f8d557932fed3205b1961134e8d5f">Ipopt::GenTMatrix</a>, <a class="el" href="classIpopt_1_1ExpansionMatrix.html#a77b279ae205e5a131c0f42d8d5d81bf8">Ipopt::ExpansionMatrix</a>, <a class="el" href="classIpopt_1_1ExpandedMultiVectorMatrix.html#abec98a973ca8feb469ebb2dbd5ce15ec">Ipopt::ExpandedMultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#a520f55d3c8c7811ace5b0ad649930c1a">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1SumMatrix.html#af67bb4693b4077dc85a58d5b63e129c2">Ipopt::SumMatrix</a>, <a class="el" href="classIpopt_1_1SumSymMatrix.html#a832187652bf3004351e34d2bac5d5cc8">Ipopt::SumSymMatrix</a>, <a class="el" href="classIpopt_1_1SymMatrix.html#aae50167ac98f271c344df819325e0ebe">Ipopt::SymMatrix</a>, <a class="el" href="classIpopt_1_1ZeroMatrix.html#acb02ae311c2af4f502aeba8f7b5df42c">Ipopt::ZeroMatrix</a>, and <a class="el" href="classIpopt_1_1ZeroSymMatrix.html#a7fac1df9e0cfea41035b4e0ecd646a8d">Ipopt::ZeroSymMatrix</a>.</p>

</div>
</div>
<a id="ae00a00b05132ec2b9213eaf3e148f381"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae00a00b05132ec2b9213eaf3e148f381">&#9670;&nbsp;</a></span>PrintImpl()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Ipopt::Matrix::PrintImpl </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Journalist.html">Journalist</a> &amp;&#160;</td>
          <td class="paramname"><em>jnlst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a9a3bf04074c3113604067ee277e690ea">EJournalLevel</a>&#160;</td>
          <td class="paramname"><em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a6cd36af5585112f521733f3e63fd8cb0">EJournalCategory</a>&#160;</td>
          <td class="paramname"><em>category</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceIpopt.html#a5a4a27f325033a0e5d85a4ebc4038b57">Index</a>&#160;</td>
          <td class="paramname"><em>indent</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>prefix</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Print detailed information about the matrix. </p>

<p>Implemented in <a class="el" href="classIpopt_1_1DenseGenMatrix.html#a58bbbe2a7668749dcfc5eddea2224ed5">Ipopt::DenseGenMatrix</a>, <a class="el" href="classIpopt_1_1MultiVectorMatrix.html#ad988a7c96a16629eb5308de09a20ba06">Ipopt::MultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1CompoundMatrix.html#aff3a744ed243d26bda21501f76e216bb">Ipopt::CompoundMatrix</a>, <a class="el" href="classIpopt_1_1DenseSymMatrix.html#aa649d14fb428e2bf33bf923613150a6a">Ipopt::DenseSymMatrix</a>, <a class="el" href="classIpopt_1_1SymTMatrix.html#a3879ee13f2226b4e6506652a9ddda0ae">Ipopt::SymTMatrix</a>, <a class="el" href="classIpopt_1_1LowRankUpdateSymMatrix.html#af83a3f02195085c5e4eae950737f9d08">Ipopt::LowRankUpdateSymMatrix</a>, <a class="el" href="classIpopt_1_1GenTMatrix.html#a2a87bea0ae7a59198264543b0eb18614">Ipopt::GenTMatrix</a>, <a class="el" href="classIpopt_1_1CompoundSymMatrix.html#a9f38b0076b75c813597a9649683a6dea">Ipopt::CompoundSymMatrix</a>, <a class="el" href="classIpopt_1_1ExpansionMatrix.html#a069925da61e3cca1d011548da777af87">Ipopt::ExpansionMatrix</a>, <a class="el" href="classIpopt_1_1ExpandedMultiVectorMatrix.html#a8ca410dfab0efb5653438c05698ff6f7">Ipopt::ExpandedMultiVectorMatrix</a>, <a class="el" href="classIpopt_1_1ScaledMatrix.html#a6ab6f212973ead7d2d4bd6b972f4d9a9">Ipopt::ScaledMatrix</a>, <a class="el" href="classIpopt_1_1TransposeMatrix.html#a7408667221ae68b1ac3b661e328ea51c">Ipopt::TransposeMatrix</a>, <a class="el" href="classIpopt_1_1SumMatrix.html#a469b045b13efe3f6604f970af4d347eb">Ipopt::SumMatrix</a>, <a class="el" href="classIpopt_1_1SumSymMatrix.html#a689b9a6fafc5610f8dfa73c26904e69c">Ipopt::SumSymMatrix</a>, <a class="el" href="classIpopt_1_1SymScaledMatrix.html#a8f4a80c0f58878fd39ede1640e2e7e01">Ipopt::SymScaledMatrix</a>, <a class="el" href="classIpopt_1_1IdentityMatrix.html#afdd1cd4885ade5d2b33189a7458691fd">Ipopt::IdentityMatrix</a>, <a class="el" href="classIpopt_1_1DiagMatrix.html#a34161863e489b569de616b5597122d41">Ipopt::DiagMatrix</a>, <a class="el" href="classIpopt_1_1ZeroMatrix.html#a215adfa621e931e8e9e2b41ef845be45">Ipopt::ZeroMatrix</a>, and <a class="el" href="classIpopt_1_1ZeroSymMatrix.html#a0beba39a19a73b28ee47856ffc73b19c">Ipopt::ZeroSymMatrix</a>.</p>

</div>
</div>
<a id="afaf10d9d3a27e7c46f3bc06287ed1166"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afaf10d9d3a27e7c46f3bc06287ed1166">&#9670;&nbsp;</a></span>operator=()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classIpopt_1_1Matrix.html">Matrix</a>&amp; Ipopt::Matrix::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIpopt_1_1Matrix.html">Matrix</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default Assignment Operator. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a145253a245865d9f785cff82eee561f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a145253a245865d9f785cff82eee561f3">&#9670;&nbsp;</a></span>owner_space_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classIpopt_1_1SmartPtr.html">SmartPtr</a>&lt;const <a class="el" href="classIpopt_1_1MatrixSpace.html">MatrixSpace</a>&gt; Ipopt::Matrix::owner_space_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00308">308</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a64d5a993c8840f716e1e91c44b89ed02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64d5a993c8840f716e1e91c44b89ed02">&#9670;&nbsp;</a></span>valid_cache_tag_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classIpopt_1_1TaggedObject.html#a6295578d16e7272fd040f02806d72afc">TaggedObject::Tag</a> Ipopt::Matrix::valid_cache_tag_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00312">312</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<a id="a831343d02d2ca02bf7e8f935670b364d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a831343d02d2ca02bf7e8f935670b364d">&#9670;&nbsp;</a></span>cached_valid_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool Ipopt::Matrix::cached_valid_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="IpMatrix_8hpp_source.html#l00313">313</a> of file <a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/LinAlg/<a class="el" href="IpMatrix_8hpp_source.html">IpMatrix.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</body>
</html>
